/* 
 * Before compilation and execution, understand what could be the output of the program.
 * Program demostrates many combinations of pointer to pointer assignments.
 */

#include <stdio.h>

int main()
{
	int a, *b, **c, ***d, ****e;

	a = 10;		// *b = **c = ***d = ****e
	b = &a;		// *c = **d == ***e
	c = &b;		// *d = **e
	d = &c;		// *e
	e = &d;

	printf("a = %d, b = %u, c = %u, d = %u, e = %u\n", a, b, c, d, e);
	printf("%d %d %d\n", a, a + *b, **c + ***d + ****e);

	return 0;
}
